<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">















 
 
 
 
 
 
 
  
  


<html>
  <head>
    <script type="text/javascript" language="JavaScript">
    ORIGINAL_PAGE_PATH = "/appengine/docs/python/images/functions.html";
    </script>
    
    
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Functions - Google App Engine - Google Code</title>
<script type="text/javascript"><!--
(function(){function a(){this.t={};this.tick=function(c){this.t[c]=(new Date).getTime()};this.tick("start")}var b=new a;window.jstiming={Timer:a,load:b};if(window.external&&window.external.pageT)window.jstiming.pt=window.external.pageT;})();

var _tocPath_ = '/appengine/docs/_toc.ezt';
var codesite_token = null;
//--></script>
<link href="../../../../css/codesite.pack.04102009.css" type="text/css" rel="stylesheet"></link>
<script src="../../../../js/codesite_head.pack.04102009.js" type="text/javascript"></script>
<script type="text/javascript">CODESITE_CSITimer['load'].tick('bhs');</script>
<link rel="search" type="application/opensearchdescription+xml" title="Google Code" href="http://code.google.com/osd.xml" />

<!--[if IE]><link rel="stylesheet" type="text/css" href="../../../../css/iehacks.css" /><![endif]-->

    <link href="../../../../css/semantic_headers.css" rel="stylesheet" type="text/css" />
    <link href="../../../css/local_extensions.css" rel="stylesheet" type="text/css" />
  </head>

  <body class="gc-documentation">

    
    
    
</a>

<div id="gb">
 <span>
  
    <a id="lang-dropdown" class="dropdown" href="http://code.google.com" onclick="return false;"><img class="globeicon" src="../../../../images/globe2_small.png"/><span>English</span></a>
  
 </span>
</div>

<div class="gbh" style="left: 0pt;"></div>
<div class="gbh" style="right: 0pt;"></div>


<style type="text/css">
  #gc-topnav h1 {
    padding: 0 0 0 6px;
  }
</style>


<div id="gc-container">
<a name="top"></a>
<div id="skipto">
  <a href="#gc-pagecontent">Skip to page content</a>
  <a href="#gc-toc">Skip to main navigation</a>
</div>

<div id="gc-header">
  <div id="logo"><a href="http://code.google.com">
  
  
     <img src="../../../../images/cleardot.gif" height="1px" width="1px" alt="Google Code Home Page" id="gc-logo-img"/>
  
  
  </a></div>
  <div id="search">
    <div id="searchForm" class="searchForm">
      <form id="cse" action="http://www.google.com/cse" accept-charset="utf-8" class="gsc-search-box" onsubmit="executeGSearch(document.getElementById('gsearchInput').value); return false;">
      <noscript>
      <input type="hidden" name="cref" value="http://code.google.com/cse/googlecode-context.xml"/>
      </noscript>
        <table class="gsc-search-box" cellpadding="0" cellspacing="0">
          <tbody>
            <tr>
              <td class="gsc-input">
                <input id="gsearchInput" type="text" name="q" maxlength="2048" class="gsc-input" autocomplete="off" title="Google Code Search" style="width:345px"/>
              </td>
              <td class="gsc-search-button">
                <div id="cs-searchresults" onclick="event.cancelBubble = true;"></div>
                <input title="Search" id="gsearchButton" class="gsc-search-button" name="sa" value="Search" type="submit"/>
              </td>
            </tr>
            <tr>
              <td colspan="2" class="greytext">e.g. "templates" or "datastore"</td>
            </tr>
          </tbody>
        </table>
      </form>
    </div> <!-- end searchForm -->
  </div> <!-- end search -->
</div> <!-- end gc-header -->


<div id="codesiteContent">

<a name="gc-topnav-anchor"></a>
<div id="gc-topnav">
  <h1>Google App Engine</h1>
  <ul id="docs" class="gc-topnav-tabs">

    <li id="home_link">
      <a href="../../../index.html" title="Google App Engine home page">Home</a>
    </li>
  
    <li id="docs_link">
      <a href="../../index.html" class="selected" title="Official Google App Engine documentation">Docs</a>
    </li>
  
    <li id="faq_link">
      <a href="../../../kb/index.html" title="Answers to frequently asked questions about Google App Engine">FAQ</a>
    </li>
  
    <li id="articles_link">
      <a href="../../../articles/index.html" title="Focused articles and tutorials for Google App Engine developers">Articles</a>
    </li>
  
    <li>
      <a href="http://googleappengine.blogspot.com/" title="Official Google App Engine blog">Blog</a>
    </li>
  
    <li>
      <a href="../../../community.html" title="Community home for Google App Engine">Community</a>
    </li>
  
    <li>
      <a href="../../../terms.html" title="Google App Engine terms of service">Terms</a>
    </li>
  
    <li>
      <a href="../../../downloads.html" title="Download Google App Engine">Download</a>
    </li>
  

  </ul>
</div> <!-- end gc-topnav -->

    <div class="g-section g-tpl-170">

      <div class="g-unit g-first" id="gc-toc">
        <ul>
  <li><a href="../../../downloads.html">Downloads</a></li>
  <li><a href="http://code.google.com/status/appengine">System Status</a></li>
  <li><a href="http://code.google.com/p/googleappengine/issues/list">Issue Tracker</a></li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Getting Started</h2>
    <ul>
      <li><a href="../../whatisgoogleappengine.html">What Is Google App Engine?</a></li>
      <li><a href="../../java/gettingstarted/index.html">Java</a>
        <ul>
              <li><a href="../../java/gettingstarted/introduction.html">Introduction</a></li>
    <li><a href="../../java/gettingstarted/installing.html">Installing the Java SDK</a></li>
    <li><a href="../../java/gettingstarted/creating.html">Creating a Project</a></li>
    <li><a href="../../java/gettingstarted/usingusers.html">Using the Users Service</a></li>
    <li><a href="../../java/gettingstarted/usingjsps.html">Using JSPs</a></li>
    <li><a href="../../java/gettingstarted/usingdatastore.html">Using the Datastore with JDO</a></li>
    <li><a href="../../java/gettingstarted/staticfiles.html">Using Static Files</a></li>
    <li><a href="../../java/gettingstarted/uploading.html">Uploading Your Application</a></li>

        </ul>
      </li>
      <li><a href="../gettingstarted/index.html">Python</a>
        <ul>
            <li><a href="../gettingstarted/introduction.html">Introduction</a></li>
  <li><a href="../gettingstarted/devenvironment.html">The Development Environment</a></li>
  <li><a href="../gettingstarted/helloworld.html">Hello, World!</a></li>
  <li><a href="../gettingstarted/usingwebapp.html">Using the webapp Framework</a></li>
  <li><a href="../gettingstarted/usingusers.html">Using the Users Service</a></li>
  <li><a href="../gettingstarted/handlingforms.html">Handling Forms With webapp</a></li>
  <li><a href="../gettingstarted/usingdatastore.html">Using the Datastore</a></li>
  <li><a href="../gettingstarted/templates.html">Using Templates</a></li>
  <li><a href="../gettingstarted/staticfiles.html">Using Static Files</a></li>
  <li><a href="../gettingstarted/uploading.html">Uploading Your Application</a></li>

        </ul>
      </li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Java <sup class="new">Early Look</sup></h2>
    <ul>
          <li><a href="../../java/overview.html">Overview</a></li>
    <li><a href="../../java/runtime.html">Servlet Environment</a></li>
    <li><a href="../../java/datastore/index.html">Storing Data</a>
      <ul>
            <li><a href="../../java/datastore/overview.html">Overview</a></li>
    <li><a href="../../java/datastore/usingjdo.html">Using JDO</a></li>
    <li><a href="../../java/datastore/dataclasses.html">Defining Data Classes</a></li>
    <li><a href="../../java/datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
    <li><a href="../../java/datastore/queriesandindexes.html">Queries and Indexes</a></li>
    <li><a href="../../java/datastore/transactions.html">Transactions</a></li>
    <li><a href="../../java/datastore/relationships.html">Relationships</a></li>
    <li><a href="../../java/datastore/usingjpa.html">Using JPA</a></li>
    <li><a href="../../java/javadoc/com/google/appengine/api/datastore/package-summary.html">Low-level API</a></li>

      </ul>
    </li>
    <li><a href="../../java/apis.html">Services</a>
      <ul>
        <li><a href="../../java/memcache/index.html">Memcache</a>
          <ul>
                <li><a href="../../java/memcache/overview.html">Overview</a></li>
    <li><a href="../../java/memcache/usingjcache.html">Using JCache</a></li>
    <li><a href="../../java/javadoc/com/google/appengine/api/memcache/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="../../java/urlfetch/index.html">URL Fetch</a>
          <ul>
                <li><a href="../../java/urlfetch/overview.html">Overview</a></li>
    <li><a href="../../java/urlfetch/usingjavanet.html">Using java.net</a></li>
    <li><a href="../../java/javadoc/com/google/appengine/api/urlfetch/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="../../java/mail/index.html">Mail</a>
          <ul>
                <li><a href="../../java/mail/overview.html">Overview</a></li>
    <li><a href="../../java/mail/usingjavamail.html">Using JavaMail</a></li>
    <li><a href="../../java/javadoc/com/google/appengine/api/mail/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="../../java/images/index.html">Images</a>
          <ul>
                <li><a href="../../java/images/overview.html">Overview</a></li>
    <li><a href="../../java/javadoc/com/google/appengine/api/images/package-summary.html">API Reference</a></li>

          </ul>
        </li>
        <li><a href="../../java/users/index.html">Google Accounts</a>
          <ul>
                <li><a href="../../java/users/overview.html">Overview</a></li>
    <li><a href="../../java/javadoc/com/google/appengine/api/users/package-summary.html">API Reference</a></li>

          </ul>
        </li>
      </ul>
    </li>
    <li><a href="../../java/javadoc/index.html">Javadoc Reference</a></li>
    <li><a href="../../java/jrewhitelist.html">JRE Class White List</a></li>
    <li><a href="../../java/config/index.html">Configuration</a>
      <ul>
            <li><a href="../../java/config/webxml.html">Deployment Descriptor</a></li>
    <li><a href="../../java/config/appconfig.html">App Config</a></li>
    <li><a href="../../java/config/indexconfig.html">Index Config</a></li>
    <li><a href="../../java/config/cron.html">Scheduled Tasks</a></li>

      </ul>
    </li>
    <li><a href="../../java/tools/index.html">Tools</a>
      <ul>
            <li><a href="../../java/tools/devserver.html">Development Server</a></li>
    <li><a href="../../java/tools/uploadinganapp.html">Uploading and Managing</a></li>
    <li><a href="../../java/tools/eclipse.html">Google Plugin for Eclipse</a></li>
    <li><a href="../../java/tools/ant.html">Using Apache Ant</a></li>

      </ul>
    </li>
    <li><a href="../../java/howto/index.html">How-To</a>
      <ul>
              <li><a href="../../java/howto/unittesting.html">Unit Testing</a></li>

      </ul>
    </li>

    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Python</h2>
    <ul>
          <li><a href="../overview.html">Overview</a></li>
    <li><a href="../runtime.html">CGI Environment</a></li>
    <li><a href="../datastore/index.html">Storing Data</a>
      <ul>
             <li><a href="../datastore/overview.html">Overview</a></li>
     <li><a href="../datastore/entitiesandmodels.html">Entities and Models</a></li>
     <li><a href="../datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
     <li><a href="../datastore/keysandentitygroups.html">Keys and Entity Groups</a></li>
     <li><a href="../datastore/queriesandindexes.html">Queries and Indexes</a></li>
     <li><a href="../datastore/transactions.html">Transactions</a></li>
     <li><a href="../datastore/typesandpropertyclasses.html">Types and Property Classes</a></li>
     <li><a href="../datastore/gqlreference.html">GQL Reference</a></li>

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../datastore/modelclass.html">Model</a></li>
         <li><a href="../datastore/expandoclass.html">Expando</a></li>
         <li><a href="../datastore/polymodelclass.html">PolyModel</a></li>
         <li><a href="../datastore/propertyclass.html">Property</a></li>
         <li><a href="../datastore/queryclass.html">Query</a></li>
         <li><a href="../datastore/gqlqueryclass.html">GqlQuery</a></li>
         <li><a href="../datastore/keyclass.html">Key</a></li>
         <li><a href="../datastore/functions.html">Functions</a></li>
         <li><a href="../datastore/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

      </ul>
    </li>
    <li><a href="../apis.html">Services</a>
      <ul>
        <li><a href="../memcache/index.html">Memcache</a>
          <ul>
                 <li><a href="../memcache/overview.html">Overview</a></li>
      <li><a href="../memcache/usingmemcache.html">Using Memcache</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../memcache/clientclass.html">Client</a></li>
         <li><a href="../memcache/functions.html">Functions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="../urlfetch/index.html">URL Fetch</a>
          <ul>
                 <li><a href="../urlfetch/overview.html">Overview</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../urlfetch/fetchfunction.html">The fetch Function</a></li>
         <li><a href="../urlfetch/responseobjects.html">Response Objects</a></li>
         <li><a href="../urlfetch/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="../mail/index.html">Mail</a>
          <ul>
                 <li><a href="../mail/overview.html">Overview</a></li>
     <li><a href="../mail/sendingmail.html">Sending Mail</a></li>
     <li><a href="../mail/attachments.html">Attachments</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../mail/emailmessageclass.html">EmailMessage</a></li>
         <li><a href="../mail/emailmessagefields.html">Message Fields</a></li>
         <li><a href="../mail/functions.html">Functions</a></li>
         <li><a href="../mail/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="index.html">Images</a>
          <ul>
                 <li><a href="overview.html">Overview</a></li>
     <li><a href="installingPIL.html">Installing PIL</a></li>
     <li><a href="usingimages.html">Using the Images API</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="imageclass.html">Image</a></li>
         <li><a href="functions.html">Functions</a></li>
         <li><a href="exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="../users/index.html">Google Accounts</a>
          <ul>
                 <li><a href="../users/overview.html">Overview</a></li>
     <li><a href="../users/userobjects.html">User Objects</a></li>
     <li><a href="../users/loginurls.html">Login URLs</a></li>
     <li><a href="../users/adminusers.html">Admin Users</a></li>

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../users/userclass.html">User</a></li>
         <li><a href="../users/functions.html">Functions</a></li>
         <li><a href="../users/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
      </ul>
    </li>
    <li><a href="../config/index.html">Configuration</a>
      <ul>
            <li><a href="../config/appconfig.html">App Config</a></li>
    <li><a href="../config/indexconfig.html">Index Config</a></li>
    <li><a href="../config/cron.html">Scheduled Tasks</a></li>

      </ul>
    </li>
    <li><a href="../tools/index.html">Tools</a>
      <ul>
            <li><a href="../tools/devserver.html">Development Server</a></li>
    <li><a href="../tools/uploadinganapp.html">Uploading and Managing</a></li>
    <li><a href="../tools/uploadingdata.html">Uploading Data</a></li>
    <li><a href="../tools/webapp/index.html">webapp Framework</a>
      <ul>
             <li><a href="../tools/webapp/overview.html">Overview</a></li>
     <li><a href="../tools/webapp/running.html">Running the Application</a></li>
     <li><a href="../tools/webapp/requesthandlers.html">Request Handlers</a></li>
     <li><a href="../tools/webapp/requestdata.html">Request Data</a></li>
     <li><a href="../tools/webapp/buildingtheresponse.html">Building the Response</a></li>
     <li><a href="../tools/webapp/redirects.html">Redirects, Headers and Status Codes</a></li>
     

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="../tools/webapp/requestclass.html">Request</a></li>
         <li><a href="../tools/webapp/responseclass.html">Response</a></li>
         <li><a href="../tools/webapp/requesthandlerclass.html">RequestHandler</a></li>
         <li><a href="../tools/webapp/wsgiapplicationclass.html">WSGIApplication</a></li>
         <li><a href="../tools/webapp/utilmodule.html">Utility Functions</a></li>
         
       </ul>
     </li>

      </ul>
    </li>
    <li><a href="../tools/libraries.html">Third-party Libraries</a></li>

      </ul>
    </li>
    <li><a href="../howto/index.html">How-To</a>
      <ul>
              <li><a href="../howto/usinggdataservices.html">Google Data Services</a></li>

      </ul>
    </li>

    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Managing Your App</h2>
    <ul>
      <li><a href="../../theadminconsole.html">The Admin Console</a></li>
      <li><a href="../../quotas.html">Quotas</a></li>
      <li><a href="../../billing.html">Billing</a></li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Resources</h2>
    <ul>
      <li><a href="../../../kb/index.html">FAQ</a></li>
      <li><a href="../../../articles/index.html">Articles</a></li>
      <li><a href="http://appengine-cookbook.appspot.com/">Cookbook</a></li>
      <li><a href="http://appgallery.appspot.com/">App Gallery</a></li>
      <li><a href="http://code.google.com/p/googleappengine/">SDK Code</a></li>
      <li><a href="http://code.google.com/p/google-app-engine-samples/">Sample Apps Code</a></li>
      <li><a href="../../../community.html">Discussion Groups</a></li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><a href="../../roadmap.html">Product Roadmap</a></li>
  <li><a href="http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes">Release Notes</a></li>
  <li><a href="../../revision_history.html">Revision History</a></li>
</ul>

        <a class="hidden" href="#gc-topnav-anchor">More Google App Engine resource links</a>
      </div>

      <div class="g-unit" id="gc-pagecontent">
        <h1 class="page_title">Functions</h1>



<p>The <code>google.appengine.api.images</code> package provides the following functions:</p>

<dl class="apireference">

  <dt id="Image_resize"><span class="itemname">resize</span>(<span class="argname">image_data</span>, <span class="argname">width</span>=<span class="argdefault">0</span>, <span class="argname">height</span>=<span class="argdefault">0</span>, <span class="argname">output_encoding</span>=<span class="argdefault">images.PNG</span>)</dt>
  <dd>
    <p>Resizes an image, scaling down or up to the given width and height.  The function takes the image data to resize, and returns the transformed image in the same format.</p>
    <p>Arguments:</p>
    <dl>
      <dt><span class="argname">image_data</span></dt>
      <dd>The image to resize, as a bytestring (<code>str</code>) in JPEG, PNG, GIF (including animated), BMP, TIFF, or ICO format.</dd>
      <dt><span class="argname">width</span></dt>
      <dd>The desired width, as a number of pixels. Must be an <code>int</code> or <code>long</code>.</dd>
      <dt><span class="argname">height</span></dt>
      <dd>The desired height, as a number of pixels. Must be an <code>int</code> or <code>long</code>.</dd>
      <dt><span class="argname">output_encoding</span></dt>
      <dd>The desired format of the transformed image. This is either <code>images.PNG</code> or <code>images.JPEG</code>. The default is <code>images.PNG</code>.</dd>
    </dl>
  </dd>

  <dt id="Image_crop"><span class="itemname">crop</span>(<span class="argname">image_data</span>, <span class="argname">left_x</span>, <span class="argname">top_y</span>, <span class="argname">right_x</span>, <span class="argname">bottom_y</span>), <span class="argname">output_encoding</span>=<span class="argdefault">images.PNG</span>)</dt>
  <dd>
    <p>Crops an image to a given bounding box.  The function takes the image data to crop, and returns the transformed image in the same format.</p>
    <p>The left, top, right and bottom of the bounding box are specified as proportional distances.  The coordinates of the bounding box are determined as <code>left_x * width</code>, <code>top_y * height</code>, <code>right_x * width</code> and <code>bottom_y * height</code>.  This allows you to specify the bounding box independently of the final width and height of the image, which may change simultaneously with a resize action.</p>
    <p>Arguments:</p>
    <dl>
      <dt><span class="argname">image_data</span></dt>
      <dd>The image to crop, as a bytestring (<code>str</code>) in JPEG, PNG, GIF (including animated), BMP, TIFF, or ICO format. </dd>
      <dt><span class="argname">left_x</span></dt>
      <dd>The left border of the bounding box, as a proportion of the image width specified as a <code>float</code> value from 0.0 to 1.0 (inclusive).</dd>
      <dt><span class="argname">top_y</span></dt>
      <dd>The top border of the bounding box, as a proportion of the image height specified as a <code>float</code> value from 0.0 to 1.0 (inclusive).</dd>
      <dt><span class="argname">right_x</span></dt>
      <dd>The right border of the bounding box, as a proportion of the image width specified as a <code>float</code> value from 0.0 to 1.0 (inclusive).</dd>
      <dt><span class="argname">bottom_y</span></dt>
      <dd>The bottom border of the bounding box, as a proportion of the image height specified as a <code>float</code> value from 0.0 to 1.0 (inclusive).</dd>
      <dt><span class="argname">output_encoding</span></dt>
      <dd>The desired format of the transformed image. This is either <code>images.PNG</code> or <code>images.JPEG</code>. The default is <code>images.PNG</code>.</dd>
    </dl>
  </dd>

  <dt id="Image_rotate"><span class="itemname">rotate</span>(<span class="argname">image_data</span>, <span class="argname">degrees</span>, <span class="argname">output_encoding</span>=<span class="argdefault">images.PNG</span>)</dt>
  <dd>
    <p>Rotates an image.  The amount of rotation must be a multiple of 90 degrees.  The function takes the image data to rotate, and returns the transformed image in the same format.</p>
    <p>Rotation is performed clockwise.  A 90 degree turn rotates the image so that the edge that was the top becomes the right edge.</p>
    <p>Arguments:</p>
    <dl>
      <dt><span class="argname">image_data</span></dt>
      <dd>The image to rotate, as a bytestring (<code>str</code>) in JPEG, PNG, GIF (including animated), BMP, TIFF, or ICO format. </dd>
      <dt><span class="argname">degrees</span></dt>
      <dd>The amount to rotate the image, as a number of degrees, in multiples of 90 degrees.</dd>
      <dt><span class="argname">output_encoding</span></dt>
      <dd>The desired format of the transformed image. This is either <code>images.PNG</code> or <code>images.JPEG</code>. The default is <code>images.PNG</code>.</dd>
    </dl>
  </dd>

  <dt id="Image_horizontal_flip"><span class="itemname">horizontal_flip</span>(<span class="argname">image_data</span>, <span class="argname">output_encoding</span>=<span class="argdefault">images.PNG</span>)</dt>
  <dd>
    <p>Flips an image horizontally.  The edge that was the left becomes the right edge, and vice versa.  The function takes the image data to flip, and returns the transformed image in the same format.</p>
    <p>Arguments:</p>
    <dl>
      <dt><span class="argname">image_data</span></dt>
      <dd>The image to flip, as a bytestring (<code>str</code>) in JPEG, PNG, GIF (including animated), BMP, TIFF, or ICO format. </dd>
      <dt><span class="argname">output_encoding</span></dt>
      <dd>The desired format of the transformed image. This is either <code>images.PNG</code> or <code>images.JPEG</code>. The default is <code>images.PNG</code>.</dd>
    </dl>
  </dd>

  <dt id="Image_vertical_flip"><span class="itemname">vertical_flip</span>(<span class="argname">image_data</span>, <span class="argname">output_encoding</span>=<span class="argdefault">images.PNG</span>)</dt>
  <dd>
    <p>Flips an image vertically.  The edge that was the top becomes the bottom edge, and vice versa.  The function takes the image data to flip, and returns the transformed image in the same format.</p>
    <p>Arguments:</p>
    <dl>
      <dt><span class="argname">image_data</span></dt>
      <dd>The image to flip, as a bytestring (<code>str</code>) in JPEG, PNG, GIF (including animated), BMP, TIFF, or ICO format. </dd>
      <dt><span class="argname">output_encoding</span></dt>
      <dd>The desired format of the transformed image. This is either <code>images.PNG</code> or <code>images.JPEG</code>. The default is <code>images.PNG</code>.</dd>
    </dl>
  </dd>

  <dt id="Image_im_feeling_lucky"><span class="itemname">im_feeling_lucky</span>(<span class="argname">image_data</span>, <span class="argname">output_encoding</span>=<span class="argdefault">images.PNG</span>)</dt>
  <dd>
    <p>Adjusts the contrast and color levels of an image according to an algorithm for improving photographs.  This is similar to the "I'm Feeling Lucky" feature of Google Picasa.  The function takes the image data to adjust, and returns the transformed image in the same format.</p>
    <p>Arguments:</p>
    <dl>
      <dt><span class="argname">image_data</span></dt>
      <dd>The image to adjust, as a bytestring (<code>str</code>) in JPEG, PNG, GIF (including animated), BMP, TIFF, or ICO format. </dd>
      <dt><span class="argname">output_encoding</span></dt>
      <dd>The desired format of the transformed image. This is either <code>images.PNG</code> or <code>images.JPEG</code>. The default is <code>images.PNG</code>.</dd>
    </dl>
    <dl><p class="note"><b>Note:</b> The <code>im_feeling_lucky()</code> method is no-op when used locally in the SDK as there is no equivilent method in PIL.<p></dl>
  </dd>

  <dt id="Image_histogram"><span class="itemname">histogram</span>(<span class="argname">image_data</span>)</dt>
  <dd>
    <p>Calculates a histogram of the image's color values.</p>
    <p>The return value is a list of 3 lists of value totals for red, green and blue, respectively.  Each color list contains an occurrence count for each of 256 color values.</p>
  </dd>

  <dt id="Image_composite"><span class="itemname">composite</span>(<span class="argname">inputs</span>, <span class="argname">width</span>, <span class="argname">height</span>, <span class="argname">color</span>=<span class="argdefault">0</span>, <span class="argname">output_encoding</span>=<span class="argdefault">PNG</span>)</dt>
  <dd>
    <p>Produces a composite image from multiple images.</p>
    <p>Arguments:</p>
    <dl>
      <dt><span class="argname">inputs</span></dt>
      <dd>
        <p>The images to use in the composite, as a list of tuples.  Each tuple must contain 5 elements:</p>
        <ul>
          <li>the image data, as a byte string (<code>str</code>)</li>
          <li>the x offset from the anchor position to place the image in the canvas, as a number of pixels (possibly negative)</li>
          <li>the y offset from the anchor position to place the image in the canvas, as a number of pixels (possibly negative)</li>
          <li>the opacity of the image, as a floating point number between 0.0 and 1.0 inclusive</li>
          <li>the position of the anchor in the canvas, one of the following: <code>TOP_LEFT</code> <code>TOP_CENTER</code> <code>TOP_RIGHT</code> <code>CENTER_LEFT</code> <code>CENTER_CENTER</code> <code>CENTER_RIGHT</code> <code>BOTTOM_LEFT</code> <code>BOTTOM_CENTER</code> <code>BOTTOM_RIGHT</code></li>
        </ul>
        <p>The images are composited in the order they appear in the list, with the first image applied first ("below" the other images).</p>
      </dd>
      <dt><span class="argname">width</span></dt>
      <dd>The width of the composite image's canvas, as a number of pixels.</dd>
      <dt><span class="argname">height</span></dt>
      <dd>The height of the composite image's canvas, as a number of pixels.</dd>
      <dt><span class="argname">color</span></dt>
      <dd>The background color of the composite image's canvas, as a 32-bit unsigned integer where each color channel is represented by one byte, in the order of alpha channel, red, green then blue.  The default is 0 (black).</dd>
      <dt><span class="argname">output_encoding</span></dt>
      <dd>The format of the final composite image, either <code>PNG</code> or <code>JPEG</code>.  The default is <code>PNG</code>.</dd>
    </dl>
    <p>Returns the composite image data as a byte string in the requested format.</p>
  </dd>

</dl>



      </div><!-- end gc-pagecontent -->
   </div><!-- end gooey wrapper -->

    </div> <!-- end codesite content -->

<div id="gc-footer" dir="ltr">
  <div class="text">
    
      <div class="notice"><div id="notice" style="text-align: center; border: 1em 0em 1em 0em">
  Except as otherwise <a
  href="http://code.google.com/policies.html#restrictions">noted</a>,
  the content of this page is licensed under the <a rel="license"
  href="http://creativecommons.org/licenses/by/2.5/">Creative Commons
  Attribution 2.5 License</a>, and code samples are licensed under the
  <a rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">Apache
  2.0 License</a>.
<!-- <rdf:RDF xmlns="http://web.resource.org/cc/" 
              xmlns:dc="http://purl.org/dc/elements/1.1/"
              xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <Work rdf:about="">
    <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />
  </Work>
  <License rdf:about="http://creativecommons.org/licenses/by/2.5/">
    <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
    <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
    <requires rdf:resource="http://web.resource.org/cc/Notice"/>
    <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
    <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
  </License>
</rdf:RDF> -->
</div>
Java is a registered trademark of Sun Microsystems, Inc.</div>
    
    &copy;2009 Google -
    <a href="http://code.google.com">Code Home</a> -
    <a href="http://www.google.com/accounts/TOS">Terms of Service</a> -
    <a href="http://www.google.com/privacy.html">Privacy Policy</a> -
    <a href="http://code.google.com/more">Site Directory</a>
    <br /> <br />
    Google Code offered in:
    <a href="http://code.google.com/intl/en">English</a> -
    <a href="http://code.google.com/intl/es">Español</a> -
    <a href="http://code.google.com/intl/ja">日本語</a> -
    <a href="http://code.google.com/intl/ko">한국어</a> -
    <a href="http://code.google.com/intl/pt-BR">Português</a> -
    <a href="http://code.google.com/intl/ru">Pусский</a> -
    <a href="http://code.google.com/intl/zh-CN">中文(简体)</a> -
    <a href="http://code.google.com/intl/zh-TW">中文(繁體)</a>
  </div>
</div><!-- end gc-footer -->

</div><!-- end gc-containter -->

<script type="text/javascript">CODESITE_CSITimer['load'].tick('ats');</script>
<script src="../../../../js/codesite_tail.pack.04102009.js" type="text/javascript"></script>






  </body>
</html>


